/*
 * @Author: szx
 * @Date: 2022-03-31 13:13:21
 * @LastEditTime: 2022-03-31 13:27:54
 * @Description:
 * @FilePath: \leetcode\剑指offerII\010\010.js
 */
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var subarraySum = function (nums, k) {
    let pre = 0,
        res = 0;
    const map = new Map([[0, 1]]);
    for (let i = 0; i < nums.length; i++) {
        pre += nums[i];
        if (map.has(pre - k)) res += map.get(pre - k);
        map.set(pre, (map.get(pre) || 0) + 1);
    }
    return res;
};
console.log(subarraySum([-1, -1, 1], 0));
console.log(subarraySum([1], 0));
console.log(subarraySum([1, 1, 1], 2));
console.log(subarraySum([1, 2, 3], 3));
